package com.taobao.demo.goods.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.taobao.demo.goods.dto.GoodsDTO;
import com.taobao.demo.goods.dto.GoodsSaveDTO;
import com.taobao.demo.goods.entity.Goods;

import java.util.List;
public interface IGoodsService extends IService<Goods> {
    /**
     * 新增或更新商品
     * @param saveDTO 前端传递的商品数据
     * @return 操作是否成功（true/false）
     */
    boolean saveGoods(GoodsSaveDTO saveDTO);

    /**
     * 更新商品上下架状态
     * @param id 商品ID
     * @param status 目标状态（UP=上架，DOWN=下架）
     * @return 操作是否成功
     */
    boolean updateStatus(Long id, String status);

    /**
     * 减少商品库存（下单时调用）
     * @param id 商品ID
     * @param quantity 减少的数量
     * @return 操作是否成功
     */
    boolean reduceStock(Long id, Integer quantity);

    /**
     * 根据ID查询商品详情（返回给前端的DTO）
     * @param id 商品ID
     * @return 商品详情DTO
     */
    GoodsDTO getGoodsById(Long id);

    /**
     * 查询所有上架商品（status=UP）
     * @return 上架商品列表DTO
     */
    List<GoodsDTO> listUpGoods();

    IPage<Goods> listMyGoods(GoodsQueryDTO queryDTO, Long merchantId);
}
